This invention relates generally to social networking, and in particular to a social networking environment in which a social graph may include web pages outside of a social networking system.
Social networking systems have become prevalent in recent years because they provide a useful environment in which users can connect to and communicate with other users. Although a variety of different types of social networking systems exist, these systems commonly provide mechanisms allowing users to define and interact within their social networks. In this context, a user may be an individual or any other entity, such as a business or other non-person entity. Accordingly, while enabling social communications among friends, a social networking system can also be a valuable tool for businesses to engage with potential consumers. Even without a commercial purpose, a social networking system may allow other types of entities to spread their message. For example, a non-person entity may set up a page or group that other users can join (or become a “fan” of), which enables the non-person entity to provide a forum to receive and transmit communications to a group of interested users.
The useful social information that is tracked and maintained by a social networking system can be thought of in terms of a “social graph,” which includes a plurality of nodes that are interconnected by a plurality of edges. Each node in the social graph may represent something that can act on and/or be acted upon by another node. Common examples of nodes include users, non-person entities, content items, groups, events, messages, concepts, and any other things that can be represented by an object in a social networking system. An edge between two nodes in the social graph represents a particular kind of connection between the two nodes, which may result from an action that was performed by one of the nodes on the other node.
For example, if one user establishes a connection with another user in the social networking system, the two users are represented as a node, and the edge between them represents the established connection. Continuing this example, one of these users may send a message to the other user within the social networking system. This act of sending the message is another edge between those two nodes, which can be tracked by the social networking system. The message itself may be treated as a node. In another example, one user may tag another user in an image that is maintained by the social networking system. This tagging action may create edges between the users as well as an edge between each of the users and the image, which is also a node. In yet another example, if a user confirms attending an event, the user and the event are nodes, where the attendance of the event is the edge. Using a social graph, therefore, a social networking system may keep track of many different types of objects and the interactions and connections among those objects, thereby maintaining an extremely rich store of socially relevant information.
One limitation of a social networking system's ability to track socially relevant information is the ability to represent different objects and to track any interactions among them. This problem can be appreciated in the context of the discussion of the social graph. If something is not represented by a node in the first place, then other nodes cannot interact with it such that the social networking system can track an edge between those nodes. For example, if it were desirable to track whether a user purchased a product outside of the social networking system, the information necessary to track that product as a node would have to be provided to the social networking system. However, there is no efficient mechanism to provide this information so that it can be used effectively by the social networking system. Accordingly, what are needed are mechanisms to facilitate expansion of the social graph to allow a social networking system to track socially relevant information for a wide variety of things.